Перейти к основному содержимому

5.09. Встроенные функции в Kotlin

Разработчику Архитектору

Встроенные функции в Kotlin

Функции создания коллекций

ФункцияЗначениеПример
listOf()Создаёт неизменяемый список из переданных элементовval numbers = listOf(1, 2, 3)
mutableListOf()Создаёт изменяемый списокval items = mutableListOf("a", "b")
setOf()Создаёт неизменяемое множество без дубликатовval unique = setOf(1, 2, 2, 3)
mutableSetOf()Создаёт изменяемое множествоval tags = mutableSetOf("kotlin", "java")
mapOf()Создаёт неизменяемую ассоциативную коллекциюval user = mapOf("name" to "Alex", "age" to 30)
mutableMapOf()Создаёт изменяемую ассоциативную коллекциюval config = mutableMapOf("debug" to true)
arrayOf()Создаёт массив объектовval names = arrayOf("Tom", "Jane")
intArrayOf()Создаёт массив примитивов типа Intval ids = intArrayOf(101, 102, 103)
doubleArrayOf()Создаёт массив примитивов типа Doubleval prices = doubleArrayOf(19.99, 29.50)
booleanArrayOf()Создаёт массив примитивов типа Booleanval flags = booleanArrayOf(true, false)
charArrayOf()Создаёт массив примитивов типа Charval letters = charArrayOf('a', 'b', 'c')
byteArrayOf()Создаёт массив примитивов типа Byteval data = byteArrayOf(0x01, 0x02)
shortArrayOf()Создаёт массив примитивов типа Shortval ports = shortArrayOf(8080, 3000)
longArrayOf()Создаёт массив примитивов типа Longval bigNumbers = longArrayOf(10000000000L)
floatArrayOf()Создаёт массив примитивов типа Floatval coords = floatArrayOf(1.5f, 2.7f)
emptyList()Возвращает пустой неизменяемый списокval empty = emptyList<String>()
emptySet()Возвращает пустое неизменяемое множествоval none = emptySet<Int>()
emptyMap()Возвращает пустую неизменяемую картуval blank = emptyMap<String, Any>()
sequenceOf()Создаёт последовательность из элементовval seq = sequenceOf(1, 2, 3)
generateSequence()Создаёт ленивую последовательность по правилуval naturals = generateSequence(1) { it + 1 }

Функции преобразования коллекций

ФункцияЗначениеПример
map()Преобразует каждый элемент в новыйval squares = numbers.map { it * it }
filter()Оставляет элементы по условиюval evens = numbers.filter { it % 2 == 0 }
flatMap()Преобразует и объединяет вложенные коллекцииval words = lines.flatMap { it.split(" ") }
sorted()Сортирует элементы по возрастаниюval ordered = items.sorted()
sortedDescending()Сортирует элементы по убываниюval reversed = items.sortedDescending()
sortedBy()Сортирует по значению селектораval byName = users.sortedBy { it.name }
sortedByDescending()Сортирует по убыванию значения селектораval byAge = users.sortedByDescending { it.age }
groupBy()Группирует элементы по ключуval byLength = words.groupBy { it.length }
associate()Создаёт карту из пар ключ-значениеval idsByName = users.associate { it.name to it.id }
associateBy()Создаёт карту с ключом из селектораval usersById = users.associateBy { it.id }
toSet()Преобразует в неизменяемое множествоval unique = list.toSet()
toList()Преобразует в неизменяемый списокval snapshot = set.toList()
toMutableList()Преобразует в изменяемый списокval editable = set.toMutableList()
toMap()Преобразует последовательность пар в картуval result = pairs.toMap()
distinct()Удаляет дубликаты из коллекцииval unique = items.distinct()
distinctBy()Удаляет дубликаты по значению селектораval uniqueNames = users.distinctBy { it.name }

Функции проверки условий

ФункцияЗначениеПример
any()Проверяет наличие хотя бы одного подходящего элементаval hasErrors = logs.any { it.contains("ERROR") }
all()Проверяет, что все элементы соответствуют условиюval valid = inputs.all { it.isNotBlank() }
none()Проверяет отсутствие элементов по условиюval clean = items.none { it.isEmpty() }
contains()Проверяет наличие элемента в коллекцииval found = list.contains("target")
first()Возвращает первый элемент коллекцииval head = items.first()
firstOrNull()Возвращает первый элемент или nullval maybe = items.firstOrNull()
last()Возвращает последний элемент коллекцииval tail = items.last()
lastOrNull()Возвращает последний элемент или nullval maybeLast = items.lastOrNull()
single()Возвращает единственный элемент коллекцииval only = list.single()
singleOrNull()Возвращает единственный элемент или nullval maybeOnly = list.singleOrNull()
find()Возвращает первый подходящий элемент или nullval match = users.find { it.id == 42 }
count()Подсчитывает количество элементовval total = items.count()
count { }Подсчитывает элементы по условиюval active = users.count { it.isActive }
isEmpty()Проверяет пустоту коллекцииval blank = list.isEmpty()
isNotEmpty()Проверяет непустоту коллекцииval filled = list.isNotEmpty()
isNullOrEmpty()Проверяет пустоту или null для коллекцийval empty = nullableList.isNullOrEmpty()

Функции извлечения подколлекций

ФункцияЗначениеПример
take()Берёт первые N элементовval preview = items.take(5)
takeLast()Берёт последние N элементовval recent = logs.takeLast(10)
takeWhile()Берёт элементы до нарушения условияval prefix = numbers.takeWhile { it < 10 }
drop()Пропускает первые N элементовval rest = items.drop(3)
dropLast()Пропускает последние N элементовval older = logs.dropLast(5)
dropWhile()Пропускает элементы до нарушения условияval suffix = numbers.dropWhile { it < 10 }
slice()Извлекает элементы по индексамval part = list.slice(1..3)
chunked()Разбивает коллекцию на части заданного размераval pages = items.chunked(20)
windowed()Создаёт скользящие окна по коллекцииval pairs = numbers.windowed(2)
zip()Объединяет две коллекции в парыval pairs = names.zip(ages)
unzip()Разделяет коллекцию пар на две коллекцииval (keys, values) = pairs.unzip()

Функции свёртки и агрегации

ФункцияЗначениеПример
fold()Сворачивает коллекцию с начальным значениемval sum = numbers.fold(0) { acc, n -> acc + n }
foldRight()Сворачивает коллекцию справа налевоval result = items.foldRight("") { item, acc -> "$item $acc" }
reduce()Сворачивает коллекцию без начального значенияval total = numbers.reduce { acc, n -> acc + n }
reduceRight()Сворачивает коллекцию справа налево без начального значенияval text = words.reduceRight { w, acc -> "$w $acc" }
joinToString()Объединяет элементы в строку с разделителемval csv = items.joinToString(", ")
sum()Вычисляет сумму числовых элементовval total = numbers.sum()
sumBy()Вычисляет сумму по результатам функцииval priceSum = products.sumBy { it.price }
sumOf()Вычисляет сумму по селектору (новее чем sumBy)val total = items.sumOf { it.value }
average()Вычисляет среднее арифметическоеval avg = numbers.average()
minOrNull()Находит минимальный элемент или nullval lowest = numbers.minOrNull()
maxOrNull()Находит максимальный элемент или nullval highest = numbers.maxOrNull()
minByOrNull()Находит элемент с минимальным значением селектораval youngest = users.minByOrNull { it.age }
maxByOrNull()Находит элемент с максимальным значением селектораval oldest = users.maxByOrNull { it.age }

Функции области видимости

ФункцияЗначениеПример
letВыполняет блок с объектом как this, возвращает результат блокаval length = str?.let { it.length } ?: 0
runВыполняет блок с объектом как this, возвращает результат блокаval result = obj.run { compute() + extra }
withВыполняет блок с объектом как this, возвращает результат блокаwith(config) { host + ":" + port }
applyВыполняет блок с объектом как this, возвращает сам объектval button = Button().apply { text = "OK"; onClick = handler }
alsoВыполняет блок с объектом как аргумент, возвращает сам объектval file = File(path).also { it.deleteOnExit() }

Функции работы со строками

ФункцияЗначениеПример
trim()Удаляет пробельные символы по краямval clean = " text ".trim()
trimStart()Удаляет пробельные символы в началеval right = " text".trimStart()
trimEnd()Удаляет пробельные символы в концеval left = "text ".trimEnd()
split()Разделяет строку по разделителюval parts = "a,b,c".split(",")
replace()Заменяет подстрокуval fixed = text.replace("old", "new")
substring()Извлекает часть строки по индексамval part = text.substring(0, 5)
toLowerCase()Преобразует в нижний регистрval lower = "HELLO".toLowerCase()
toUpperCase()Преобразует в верхний регистрval upper = "hello".toUpperCase()
capitalize()Делает первую букву заглавнойval title = "text".capitalize()
decapitalize()Делает первую букву строчнойval varName = "Text".decapitalize()
toInt()Преобразует строку в целое числоval number = "42".toInt()
toDouble()Преобразует строку в число с плавающей точкойval price = "19.99".toDouble()
toBoolean()Преобразует строку в логическое значениеval flag = "true".toBoolean()